home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 039a / dflat8.zip / COMBOBOX.C < prev    next >
Text File  |  1991-09-30  |  2KB  |  86 lines

  1. /* -------------- combobox.c -------------- */
  2.  
  3. #include "dflat.h"
  4.  
  5. int ListProc(WINDOW, MESSAGE, PARAM, PARAM);
  6.  
  7. int ComboProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
  8. {
  9.     switch (msg)    {
  10.         case CREATE_WINDOW:
  11.             wnd->extension = CreateWindow(LISTBOX,
  12.                                             NULL,
  13.                                             wnd->rc.lf,wnd->rc.tp+1,
  14.                                             wnd->ht-1, wnd->wd+1,
  15.                                             NULL,
  16.                                             GetParent(wnd),
  17.                                             ListProc,
  18.                                             HASBORDER | NOCLIP | SAVESELF);
  19.             ((WINDOW)(wnd->extension))->ct->command = wnd->ct->command;
  20.             wnd->ht = 1;
  21.             wnd->rc.bt = wnd->rc.tp;
  22.             break;
  23.         case PAINT:
  24.             foreground = FrameForeground(wnd);
  25.             background = FrameBackground(wnd);
  26.             wputch(wnd, DOWNSCROLLBOX, WindowWidth(wnd), 0);
  27.             break;
  28.         case KEYBOARD:
  29.             if ((int)p1 == DN)    {
  30.                 SendMessage(wnd->extension, SETFOCUS, TRUE, 0);
  31.                 return TRUE;
  32.             }
  33.             break;
  34.         case LEFT_BUTTON:
  35.             if ((int)p1 == GetRight(wnd) + 1)
  36.                 SendMessage(wnd->extension, SETFOCUS, TRUE, 0);
  37.             break;
  38.         default:
  39.             break;
  40.     }
  41.     return BaseWndProc(COMBOBOX, wnd, msg, p1, p2);
  42. }
  43.  
  44. int ListProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
  45. {
  46.     DBOX *db = GetParent(wnd)->extension;
  47.     WINDOW cwnd = ControlWindow(db, wnd->ct->command);
  48.     char text[130];
  49.     int rtn;
  50.     WINDOW currFocus;
  51.  
  52.     switch (msg)    {
  53.         case CREATE_WINDOW:
  54.             wnd->ct = malloc(sizeof(CTLWINDOW));
  55.             break;
  56.         case SETFOCUS:
  57.             if ((int)p1 == FALSE)
  58.                 SendMessage(wnd, HIDE_WINDOW, 0, 0);
  59.             break;
  60.         case BORDER:
  61.             currFocus = inFocus;
  62.             inFocus = NULL;
  63.             rtn = DefaultWndProc(wnd, msg, p1, p2);
  64.             inFocus = currFocus;
  65.             return rtn;
  66.         case LB_SELECTION:
  67.             rtn = DefaultWndProc(wnd, msg, p1, p2);
  68.             SendMessage(wnd, LB_GETTEXT, (PARAM) text, wnd->selection);
  69.             PutItemText(GetParent(wnd), wnd->ct->command, text);
  70.             SendMessage(cwnd, PAINT, 0, 0);
  71.             cwnd->TextChanged = TRUE;
  72.             return rtn;
  73.         case LB_CHOOSE:
  74.             SendMessage(cwnd, SETFOCUS, TRUE, 0);
  75.             return TRUE;
  76.         case CLOSE_WINDOW:
  77.             if (wnd->ct != NULL)
  78.                 free(wnd->ct);
  79.         default:
  80.             break;
  81.     }
  82.     return DefaultWndProc(wnd, msg, p1, p2);
  83. }
  84.  
  85.  
  86.